// 特别注意： reject和resolve的作用域只在promise的起始函数中有效。即在后面的then和catch代码块中都是不可以使用的。（会报错！！）
//    resolve() 中可以放置一个参数用于向下一个 then 传递一个值
//    reject() 参数中一般会传递一个异常给之后的 catch 函数用于处理异常。

// 用户基本信息修改界面
// name:修改的名称  URL:请求地址

// 定义一个全局变量count  这个util.js文件其中每次函数被调用，都会重新加载
/**
 *  时间戳获取：let time3 = new Date().valueOf()
 */
var count = 1
// 修改用户的基本信息
function reviseMessage(params, URL) {
  return new Promise((resolve, reject) => {
    // 如果修改的不是密码
    if (params != null && params != "") {
      wx.request({
        url: URL,
        data: params,
        method: 'GET',
        header: { 'content-type': 'application/json' },
        success: function (res) {
          resolve(res.data)
        },
        fail: function (error) {
          reject(error)
        }
      })
    }
  })
}

// 图片上传
function uploadImage() {
  return new Promise((resolve, reject) => {
    wx.chooseImage({
      success(res) {
        console.log("图片选择成功！")
        // 这里的地址只是一个临时的文件地址
        const tempFilePaths = res.tempFilePaths

        // 将本地上传图片的临时地址的图片上传到小程序云后台
        wx.cloud.uploadFile({
          // 指定上传到的云路径  记得带后缀  new Date().valueOf()：返回一个时间戳
          cloudPath: new Date().valueOf() + '.png',
          // 指定要上传的文件的小程序临时文件路径
          filePath: tempFilePaths[0],
          // 成功回调
          success: res => {
            console.log('上传成功')
            // 后续操作都基于文件 ID 而不是 URL。
            console.log("上传的文件ID=" + res.fileID)
            resolve(res.fileID)
          },
          fail: err => {
            console.log("文件路径=" + tempFilePaths[0] + '的图片上传失败')
            reject(err)
          }
        })
        count++
      },
      fail(err) {
        console.log("图片选择失败！！")
      }
    })

  }).catch(error => {
    console.log(error)
  })
}
// 获取上传至云开发的图片 -通过ID获取
function getImageRealURL(ImageID) {
  console.log('imageID='+ImageID)
  var realURL = ''
  return new Promise((resolve, reject) => {
    wx.cloud.getTempFileURL({
      fileList: [{
        fileID: ImageID,
        maxAge: 60 * 60 * 12, // 12 hour 设置过期时间 单位:/s
      }]
    }).then(res => {
      realURL = res.fileList[0].tempFileURL
      console.log('图片的地址获取成功! url=' + realURL)
      resolve(realURL)
    }).catch(error => {
      console.log('图片的地址获取出错!')
      reject(error)
    })
  })

}

//上传朋友圈到后台服务器
function uploadFriendCircle(params, uploadURL) {
  return new Promise((resolve, reject) => {
    wx.request({
      url: uploadURL,
      data: params,
      method: 'GET',
      dataType: 'json',
      success(res) {
        console.log('请求成功！')
        console.log(res)
        if (res.data.status == 'success') {
          console.log('朋友圈上传成功！')
        } else {
          console.log('朋友圈上传失败！')
        }
        resolve(res)
      },
      fail(error) {
        console.log('请求失败！！')
        console.log(error)
        reject(error)
      }
    })
  })
}

// 获取服务器上朋友圈的数据
function getFriendCircle(user, url) {
  return new Promise((resolve, reject) => {
    wx.request({
      url: url,
      data: {
        username: user
      },
      dataType: 'json',
      method: 'GET',
      success(res) {
        console.log(res)
        if (res.data.status == 'success') {
          console.log(res + "服务器请求成功！！")
          resolve(res.data.list)
        } else {
          console.log(res + "服务器请求出错！！")
        }
      },
      fail(err) {
        console.log(err + "请求fail")
        console.log(err)
      }
    })
  })
}

// 当天饮食查询  包括当天运动记录查询
function findTodayDiet(params, url) {
  return new Promise((resolve, reject) => {
    wx.request({
      url: url,
      data: params,
      success(res) {
        console.log('当天的数据请求成功！！')
        resolve(res)
      },
      fail(err) {
        console.log('当天的数据请求fail!')
        console.log(err)
      }
    })
  })
}

// 饮食添加模块
function addDiet(params, requestURL) {
  return new Promise((resolve, reject) => {
    wx.request({
      url: requestURL,
      data: params,
      header: {
        'content-type': 'application/json' // 默认值
      },
      method: 'GET',
      success(res) {
        console.log('请求成功！，服务器返回的数据如下：')
        console.log(res)
        resolve(res.data.status)
      },
      fail(error) {
        console.log('请求失败!')
        console.log(error)
      }
    })
  })
}

// 饮食详情查询模块
function findDietDetails(params,requestURL) {
  return new Promise((resolve,reject)=>{
    wx.request({
      url:requestURL,
      data:params,
      header: {
        'content-type': 'application/json' // 默认值
      },
      method: 'GET',
      success(res){
        console.log('饮食详情查询模块请求success')
        console.log(res)
        // 这里返回的是一个数组
        resolve(res.data.map.foodDetails)        
      },
      fail(error){
        reject(error)
        console.log('饮食详情查询模块请求fail')
        console.log(error)
        wx.showToast({
          title: '上传失败',
          icon:'error'
        })
      }
    })
  })
}

// 运动数据详情查询模块
function findSportDetails(params,requestURL) {
  return new Promise((resolve,reject)=>{
    wx.request({
      url:requestURL,
      data:params,
      header: {
        'content-type': 'application/json' // 默认值
      },
      method: 'GET',
      success(res){
        console.log('运动详情查询模块请求success')
        console.log(res)
        // 这里返回的是一个数组
        resolve(res.data.map.sport)        
      },
      fail(error){
        reject(error)
        console.log('运动详情查询模块请求fail')
        console.log(error)
        wx.showToast({
          title: '上传失败',
          icon:'error'
        })
      }
    })
  })
}

// 运动数据更新
function updateSport(params,url) {
  console.log('hello world')
  return new Promise((resolve,reject)=>{
    wx.request({
      url: url,
      data:params,
      dataType:JSON,
      success(res){
        console.log('更新成功!')
        console.log(res)
        resolve(res)
      },
      fail(err){
        console.log('更新失败')
        console.log(err)
      }
    })
  })
}


// 添加用户的基本信息
function addUserBasicMessage(params,url) {
  return new Promise((resolve,reject)=>{
    wx.request({
      url: url,
      data:params,
      dataType:"json",
      success(res){
        if(res.data.status=='success'){
          console.log("添加成功")          
        }        
        console.log(res)
      },
      fail(error){
        console.log('添加失败')
        console.log(error)
      }
    })
  })
}

// 查询用户的基本信息
function findUserbasicMessage(params,url) {
  return new Promise((resolve,reject)=>{
     wx.request({
       url: url,
       data:params,
       dataType:'json',
       success(res){
         console.log(res.data.list[0])
         resolve( res.data.list[0] )
       },
       fail(err){
         console.log(err)
       }
     })
  })
}




// 个人中心模块
module.exports.reviseMessage = reviseMessage
module.exports.uploadImage = uploadImage
module.exports.getImageRealURL = getImageRealURL
module.exports.uploadFriendCircle = uploadFriendCircle
module.exports.getFriendCircle = getFriendCircle
// 添加用户基本信息
module.exports.addUserBasicMessage=addUserBasicMessage
// 查询用户基本信息
module.exports.findUserbasicMessage=findUserbasicMessage

// 饮食模块
module.exports.findTodayDiet = findTodayDiet
// 饮食添加模块
module.exports.addDiet = addDiet
// 饮食详情查询模块
module.exports.findDietDetails=findDietDetails
//运动详情查询模块
module.exports.findSportDetails= findSportDetails

// 运动数据更新
module.exports.updateSport=updateSport

// 暴露前缀地址接口
const keepfitApi="http://localhost:8081/keepfit/"
export {keepfitApi}